package com.huashi.dealer.modular.business.cart.service;

import com.huashi.dealer.modular.business.cart.param.CartResponseParam;

import java.util.List;

/**
 * 购物车结算服务接口
 * 对应PHP的Checkout服务
 *
 * @author 谭陈强
 * @since 2025-01-27
 */
public interface CheckoutService {

    /**
     * 购物车结算
     * @param userId 用户ID
     * @param goodsList 商品列表
     * @return 结算信息
     */
    CartResponseParam onCheckout(Long userId, List<CartResponseParam.CartGoodsInfo> goodsList);

    /**
     * 获取用户可用优惠券列表
     * @param userId 用户ID
     * @param orderTotalPrice 订单总金额
     * @return 优惠券列表
     */
    List<Object> getUserCouponList(Long userId, java.math.BigDecimal orderTotalPrice);

    /**
     * 计算积分抵扣
     * @param userId 用户ID
     * @param orderTotalPrice 订单总金额
     * @return 积分抵扣信息
     */
    Object calculatePointsDiscount(Long userId, java.math.BigDecimal orderTotalPrice);

    /**
     * 获取配送方式
     * @return 配送方式列表
     */
    List<Object> getDeliveryTypes();

    /**
     * 计算配送费用
     * @param addressId 收货地址ID
     * @param goodsList 商品列表
     * @return 配送费用
     */
    java.math.BigDecimal calculateDeliveryFee(Long addressId, List<CartResponseParam.CartGoodsInfo> goodsList);
}
